// 创建路由模块  路由模块是由 express 提供的一种包装路由的方法
var express = require("express");
var fs = require("fs");

//导入 学生信息 处理方法
var stu_DealWith = require("./studentsData");

// 创建路由
var router = express.Router();

// 首页 渲染 数据
var comments = [
  {
    title_1: "FPX",
    title_2: "EDG",
    title_3: "LNG",
    title_4: "RNG",
  },
];

// 1.  get   渲染首页
router.get("/students", function (req, res) {
  fs.readFile("./db.json", "utf8", function (error, data) {
    if (error) {
      return res.send("渲染首页失败");
    }

    //   如果读取 成功，则通过 render 来渲染 index.html
    res.render("index.html", {
      comments: comments,
      /* 1. 后端响应的JSON格式的字符串返回到前端，前端解析成JS对象值（JSON 对象）， 再对页面进行渲染。
            在数据传输过程中，JSON是以文本，即字符串的形式传递的，而JS操作的是JSON对象 */
      /* 2. JSON.parse 的作用 将 后端返回的 JSON 文本  转换成 JSON 对象  再调用JSON对象里面的 students 属性 
          就能 将页面进行渲染  */
      students: JSON.parse(data).students,
    });
  });
});

// 2.  get   渲染添加学生页面
router.get("/students/post", function (req, res) {
  // 点击 添加学生  按钮  跳转到添加学生信息页面
  res.render("post.html");
});

// 3.  post  处理添加学生请求
router.post("/students/post", function (req, res) {
  stu_DealWith.save(req.body, function (error, data) {
    if (error) {
      return res.send("处理添加学生请求失败");
    }
    //   成功，则重定向回首页
    res.redirect("/students");
  });
});

// 4.  get  渲染编辑页面
router.get("/students/edit", function (req, res) {
  stu_DealWith.findById(parseInt(req.query.id), function (error, student) {
    if (error) {
      return res.send("渲染编辑页面失败");
    }
    res.render("edit.html", {
      student: student,
    });
  });
});

// 5.  post  处理编辑请求
router.post("/students/edit", function (req, res) {
  stu_DealWith.updateById(req.body, function (error, data) {
    if (error) {
      return res.send("处理编辑请求失败");
    }
    res.redirect("/students");
  });
});

// 6.  get   处理删除请求
router.get("/students/delete", function (req, res) {
  stu_DealWith.delete(parseInt(req.query.id), function (error, data) {
    if (error) {
      return res.send("处理删除请求失败");
    }
    res.redirect("/students");
  });
});

module.exports = router;
